package com.tmxk.day01.lifeng.demo4;

import java.util.Random;

/**
 * static使用场景:数据共享时使用
 * 需求: 电影买票,总共一百张,用户买票,根据漂亮需求,A买两张,B买五张,...,当一百张票卖结束,系统就不卖了;
 * 针对100张票进行数据共享
 *
 */
public class StaticDemo {
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

	//定义了一个共享电影票数据变量
	public static int tickets = 100;
	
	/**
	 * 售票方法
	 */
	public String sellTicket(String name,int num) {
		String message = "";
		for(int i = 1;i <= num;i++) {
		//testMain
		if(tickets == 0) {
			message = "不好意思,没票了";
			return message;
		}else {
			tickets --;
			message = name + "买了" + num + "张票,剩余" + tickets + "张";
		}
		System.out.println("message:" + message);
	}
		return message;
}	
	public static void testMain() {
		System.out.println("静态方法测试");
	}
	/**
	 * 同一个类中,静态方法中不能直接调用非静态方法,可通过实例对象名.方法名()调用
	 * 同一个类中,静态方法和静态方法可直接调用;
	 * 同一个类中,非静态方法中能直接调用静态成员(静态属性,静态方法)				
	 * 
	 * 不同类中,静态方法中不能直接调用非静态方法,可通过实例对象名.方法名()调用;
	 * 不同类中,静态方法和静态方法通过类名.静态方法();or 实例对象名.静态方法名()调用;(不推荐用)
	 * 不同类中,非静态方法中能直接调用类名.静态成员(静态属性,静态方法) or 实例对象名.静态成员 调用;(不推荐用)
	 * 
	 */
	//main 主线程
	public static void main(String[] args) throws InterruptedException{
		StaticDemo sd = new StaticDemo();
		for(int i = 1; i < 50 ; i++){
			Random ran = new Random();
			String mes = sd.sellTicket("张三" + i , ran.nextInt(20));
			//休眠2s
			Thread.sleep(2000);
			System.out.println(mes+"\n");
		}
		
	}
}
